/**
 *  Copyright (C) 2008-2013  Telosys project org. ( http://www.telosys.org/ )
 *
 *  Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *          http://www.gnu.org/licenses/lgpl.html
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.telosys.common.output.writer;

import java.io.IOException;
import java.io.Writer;
import java.util.List;

import org.telosys.common.TelosysRuntimeException;
import org.telosys.util.beanwriter.BeanWriter;
import org.telosys.util.beanwriter.JsonBeanTranslator;

/**
 * 
 * @author Laurent GUERIN
 *  
 */
public class ListJsonWriter
{
    //private final static String END_OF_LINE = "\n" ;
    private final static String NULL        = "null" ;

    //---------------------------------------------------------------------------------------------------------
    /**
     * Generates a JSON array for the given list
     * @param writer
     * @param list the list to write 
     */
    public static void toJson(Writer writer, List<?> list )
    {
        try {
            if (list == null)
            {
                writer.write( NULL );
            }
            else {
                
        		JsonBeanTranslator jsonWriter = new JsonBeanTranslator(true);
        		BeanWriter bw = new BeanWriter(writer, jsonWriter);

//        		writer.write("[ ");
//                //--- For each VO in the list ...
//                for ( Object object : list )
//                {
//                	bw.writeObject(object); // even  if null
//                }
//                writer.write(END_OF_LINE);
//                writer.write("] " );
//                writer.write(END_OF_LINE);
                
                bw.writeObject(list);
            }
            
	    } 
        catch (IOException ex)
	    {
	        throw new TelosysRuntimeException("toJSON : IOException", ex);
	    }
        finally {
        }
    }

    //---------------------------------------------------------------------------------------------------------
}